package com.life.notes.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.life.notes.dto.UserQueryPara;
import com.life.notes.model.SysMenuEntity;
import com.life.notes.model.SysRoleEntity;
import com.life.notes.model.SysUserEntity;
import com.life.notes.vo.UserInfoVO;

import java.util.List;

/**
 * @Description 系统用户业务接口
 * @Author Sans
 * @CreateTime 2019/6/14 15:57
 */
public interface SysUserService extends IService<SysUserEntity> {

    /**
     * 根据用户名查询实体
     * @Author Sans
     * @CreateTime 2019/9/14 16:30
     * @Param  username 用户名
     * @Return SysUserEntity 用户实体
     */
    SysUserEntity selectUserByName(String username);
    /**
     * 根据用户ID查询角色集合
     * @Author Sans
     * @CreateTime 2019/9/18 18:01
     * @Param  userId 用户ID
     * @Return List<SysRoleEntity> 角色名集合
     */
    List<SysRoleEntity> selectSysRoleByUserId(Integer userId);
    /**
     * 根据用户ID查询权限集合
     * @Author Sans
     * @CreateTime 2019/9/18 18:01
     * @Param  userId 用户ID
     * @Return List<SysMenuEntity> 角色名集合
     */
    List<SysMenuEntity> selectSysMenuByUserId(Integer userId);

    /**
     * 系统管理-用户基础信息表列表分页
     *
     * @param filter
     * @return
     */
    IPage<SysUserEntity> listPage(UserQueryPara filter);

    /**
     * 保存系统管理-用户基础信息表
     *
     * @param input:
     * @return: java.lang.Integer
     */
    Integer saveUser(SysUserEntity input);

    /**
     * 修改用户个人信息
     *
     * @param para:
     * @return: java.lang.Integer
     */
    Integer updatePersonalInfo(SysUserEntity para);

    /**
     * 系统管理-用户基础信息表列表
     *
     * @param filter
     * @return
     */
    List<SysUserEntity> list(UserQueryPara filter);

    /**
     * 通过token获取用户信息
     *
     * @return: com.zhengqing.modules.system.dto.model.UserInfoVO
     */
    UserInfoVO getCurrentUserInfo();

}